1. Field of the Invention
The present invention relates to a serial printer that is employed in a computer system as a terminal printer or a facsimile terminal, and in particular to a serial printer that employs an improved method for storing data in an image buffer.
2. Related Art
A conventional serial printer generates an interrupt for each printing sequence, and in accordance with an interrupt process program, transmits required image data from a buffer (an image buffer), in which they are stored, to a print head. Provided in the print head are a plurality of dot formation elements (e.g., ink-jet nozzles or impact wires) that are arranged in the columnar direction (perpendicularly), and as the head is moved across a row (horizontally), the dot formation element array is activated each time it reaches the position of an individual pixel.
Therefore, for the transfer of image data to the print head, a set of data for each dot formation element array is transferred to the print head.
FIG. 10 is a diagram showing how to handle data stored in the image buffer of the serial printer.
Source data for input to a serial printer are first stored to a memory area called a data buffer 61. The source data can include various types of image data; thus, in the example shown in FIG. 10, for easy understanding of what is defined as last image data 69 that is held in an image buffer 67, which will be described later, raster graphics image data 65, which correspond to the last image data 69, are stored that are supposed to be included in the source data. The individual blocks denoted by numerals 1, 2 and 3 in the source image data 65 represent the data for one byte (a set of eight sequential pixels on the same line). The numbers provided for the bytes indicate the order in which an image has been scanned using the raster method.
That is, rater scanning begins at the topmost line (horizontal line) in an image, and scans the pixels in this line horizontally from the left to the right (or in the reverse direction) (byte 1 to byte 10 in FIG. 10), and then scans the second line horizontally (byte 11 to byte 20) and moves to the line immediately below. This process is repeated until the scanning is completed for the bottom line.
In an imaging process 63, the source data 65 read from the data buffer 61 are employed to generate the last raster graphics image data 69, which are written in the image buffer 67. In the imaging process 63, the order in which the last image data 69 is generated corresponds to the above described raster scanning order (i.e., the order following the byte numbers in FIG. 10), while the order in which the image buffer 67 is accessed when the data is written corresponds simply to the address order. Therefore, the last image data 69 are so stored in the image buffer 67 that, as is shown in FIG. 10, when data in the image buffer 67 are accessed in the order of the addresses, the bytes are read in the raster order (in the ascending number order).
Then, in a transfer process 111, the bytes of the last image data 69 are read from the image buffer 67 and are transmitted to the print head. The order in which the bytes are read from the image buffer 67 corresponds to the order in which the dot formation elements are arranged in the sub-scanning direction of the print head, which does not match the raster scanning order. Specifically, the general print head for a serial printer has a plurality of dot formation elements (e.g., ink-jet nozzles or impact wires) that are arranged in the sub-scanning direction (the columnar direction), and while the head is moving in the main scanning direction (along a row), the dot formation element array must be activated each time it reaches the location of an individual pixel. For the transfer process 11, therefore, a set of a plurality of bytes that are to be given to the dot formation element array, i.e., a plurality of bytes that are arranged in the image buffer 67 in the columnar direction, must be read.
Assuming that there are four dot formation elements in one array, in FIG. 10, first, a set of four bytes, bytes 1, 11, 21 and 31, is read, then a set of bytes 2, 12, 22 and 32, is read, and finally a set of bytes 3, 13, 23 and 33 is read. However, the bytes that are to be read as a set are stored at addresses that are located separate from another in the image buffer 67.
A conventional method, employed by a serial color ink-jet printer, for storing data in an image buffer and for transferring data to a print head will now be described.
First, as an assumption, a color adjustment problem of the conventional serial printer will be described while referring to FIG. 11.
In FIG. 11(a) is shown the schematic arrangement for a print head, in a serial in-jet color printer, though which ink is ejected. For this explanation, it is presumed that in a print head 54 there are four nozzle arrays 71, 72, 73 and 74. A plurality of nozzles 71a, 72a, 73a and 74a are provided for each of the nozzle arrays 71, 72, 73 and 74. Further, the arrangement for the nozzle arrays 71, 72, 73 and 74 is so designed that the arrays are separated by a predetermined distance d.
When, for example, color printing is to be performed using the print head 54 in FIG. 11(a), differently colored inks, such as cyan (C), magenta (M), yellow (Y) and black (K), are allocated for the nozzle arrays 71, 72, 73 and 74, and C, M, Y and K dots are printed at the same location for mixing the colors.
Specifically, as is shown in FIG. 11(b), when the print head 54 is located at position (A), the ink is ejected through the nozzle array 71, and when the print head 54 is located at position (B), the ink is ejected through the nozzle array 72. Similarly, when the print head 54 is located at position (C), the ink is ejected through the nozzle array 73, and when the print head 54 is located at position (D), the ink is ejected through the nozzle array 74. As a result, differently colored inks are ejected through the nozzle arrays 71, 72, 73 and 74 at a print location 76 on a printing sheet 55, and the four colors of C, M, Y and K are blended in order to provide color printing.
As is described above, the print head of the color ink-jet printer is so designed that, for example, ink-jet nozzle arrays for four colors, cyan (C), magenta (M), yellow (Y) and black (K), each array including a plurality of nozzles (five nozzles in FIG. 11), are located at a predetermined interval d. During the transfer of data performed by the above program, data are transmitted for each nozzle array.
In FIG. 12 is shown a method, employed by a conventional serial color printer, for storing data in an image buffer.
In the imaging process 63 (see FIG. 10) performed by the conventional serial color printer, C, M, Y and K images are individually developed in the memory, as is shown in FIG. 12(a).
As is shown in FIG. 12, an image buffer 67' how separate for memory areas for the individual C, M, Y and K color nozzle arrays.
And as is shown in FIG. 12(b), data are stored for each of the C, M, Y and K nozzle arrays, with sets of data in the memory being provided for each nozzle array in a count equivalent to the number of nozzles. Thus, as is shown in FIG. 12(a), the above described data for eight horizontal bits (one byte) are stored discontinuously for each C, M, Y or K nozzle array.
Specifically, assume that data (one byte) corresponding to a set (8 bits) of pixel values (1 bit each), each of which indicates whether a dot is printed or not at the same printing location 76 on the printing sheet 55 shown in FIG. 11(b), is represented as a shaded portion, as is shown in FIG. 12(a). The shaded portions for C, M, Y and K colors are stored to be discontinuously located. The portions consisting of one byte, two bytes and three bytes, respectively denoted by d', 2d' and 3d' in FIG. 12(a), are dummy memory values of the image buffer 67'. That is, by the dummy image portions, the data are seemed to be present. When the process is performed in the direction indicated by an arrow in FIG. 12(a), the transfer of data to the print head is begun, and the transfer timings for the data are so shifted that the above described color printing can be provided.
In FIG. 12(a), portion d' corresponds to the memory value that corresponds to the predetermined distance d separating the nozzle arrays shown in FIG. 11, and the actual image (printing) area in the memory is as is shown in FIG. 12(a). In the transfer process 111, data are extracted, in order, from the C, M, Y and K memory areas in the image buffer 67' as is shown in FIG. 12(b), and are transmitted to the print head. In other words, a plurality of bytes, which are arranged in the direction of rows in the memory area for each color that corresponds to one nozzle array, are read as a set from the image buffer 67' and are transmitted to the print head. The data for one column are transmitted to the print head in consonance with at a specific print timing.
A method employed by the conventional serial color printer for accessing the image buffer 67' will now be described while referring to FIG. 13.
As is apparent from the above explanation, in the imaging process 63 the C, M, Y and K color images are developed individually, and C, M, Y and K color image data respectively are stored, in that order, in memory areas 67'C, 67'M, 67'Y and 67'K in the image buffer 67', as is shown in FIG. 13. In the transfer process 111, in consonance with a specific timing, data for five bytes, Ca, Ma, Ya and Ka, are transmitted to the print head from the C, M, Y and K color memory areas 67'C, 67'M, 67'Y and 67'K, as is shown in FIG. 13.
In consonance with the following print timing, data for five bytes, Cb, Mb, Yb and Kb, are transmitted to the print head, and at the third print timing, data for five bytes, Cc, Mc, Yc and Kc, are transmitted to the print head.
As is apparent from FIGS. 12(b) and 13, the location from which the data are extracted differs for each color because, as is described above, the C, M, Y and K ink-jet nozzle arrays of the print head are separated by the predetermined distance d (see FIG. 11).
In another conventional serial color printer, independent pointers and counters are required for the four colors, C, M, Y and K, while a program is used for managing the pointers for individual colors.
Recently, since the amount of image data has increased in consonance with an increase in printing densities, reducing the transfer periods, which have accordingly been extended, has become important.
In the conventional art explained while referring to FIG. 10, in the transfer process 11 a set of a plurality of bytes, which are arranged in the direction of rows and which correspond to the dot formation element array, is read from the image buffer 67. The bytes arranged in the direction of rows are stored in memory areas at addresses that are separated from each other in the image buffer 67. In the transfer process 111, therefore, calculation of the separated addresses must be performed for each data reading.
In the transfer process 111, the time at which a set of the bytes is transferred from the image buffer 67 to the print head must be determined in consonance with the time at which the dot formation element arrays arrive at individual pixel positions. Actually, the transfer process is performed as an interrupt process for which a periodical signal that is generated by a carriage moving system is used as a trigger. While the transfer process must be performed at a timing that is vigorously controlled, the performance of the above described complicated address calculation increases the load imposed on the CPU, and deteriorates throughput.
With the conventional method used for storing data in the image buffer and that has been explained for the color serial printer, the image buffer is separated into memory areas for four colors, C, M, Y and K, as is shown in FIGS. 12 and 13, and image data for four colors are discontinuously stored for individual C, M, Y and K nozzle arrays.
As is shown in FIGS. 12(b) and 13, therefore, when the data is to be transferred to the print head in the transfer process 111, the discontinuous addresses must be accessed a number of times that corresponds to the number of colors. In addition, in another conventional serial printer, the pointers for the colors C, M, Y and K must be managed independently. When the data are to be transmitted to the program, therefore, much labor is required for the management of the pointers for the extraction of data.
DMA may be employed for high-speed data transfer. However, the number of nozzle arrays in the serial printer is three, or may be as many as ten, and when, for example, the data are stored discontinuously for the C, M, Y and K nozzle arrays, at least four DMA transfer circuits (channels) are required to transfer data to the print head.
In this case, however, since only two DMA transfer circuits (channels) are incorporated in a comparatively inexpensive CPU, the DMA method is actually not fully employed for transferring data to the print head.